home *** CD-ROM | disk | FTP | other *** search
/ The Utilities Experience / The Utilities Experience - Volume 1.iso / software / demos / a-d / amms / mbbatch / com / zconnect_server < prev    next >
Encoding:
Text File  |  1995-08-16  |  9.7 KB  |  331 lines

  1. ;    ZConnect-Server
  2. ;
  3. ;    Scriptfile zum Austausch neuer Nachrichten im ZConnect-Format
  4. ;
  5. ;    $VER: 1.00 / 13.08.1995
  6. ;
  7. ;       Beschreibung :
  8. ;    Server-Datei fuer das Janus-Protokoll. Die gesendeten und
  9. ;    empfangenen Daten werden im Directory MBMSG:POINT/<Portname>/
  10. ;    temporaer gespeichert.
  11. ;    Stehen im Directory MBNET:EXPORT/ die Dateien <USERNAME>.LHA,
  12. ;    <USERNAME>.MSGNR und <USERNAME>.PMNR, so werden nicht die neusten
  13. ;    Nachrichten und Files aktuell exportiert und gepackt, sondern diese
  14. ;    vorgepackten Daten benutzt.
  15. ;    Existiert der Port IMPORT, so wird der Import durch einen Event
  16. ;    auf diesen Port umgelenkt.
  17. ;    Wird diese Batch auf dem Port IMPORT ausgefuehrt, so werden nur
  18. ;    Daten aus dem Directory mbnet:Import/ importiert.
  19. ;    
  20. ;
  21. ;    Das Script sollte so eingebunden werden, dass es ueber Flags
  22. ;    auf die folgende Befehle zugreifen kann !
  23. ;
  24. ;    ADD EVENT
  25. ;    CHECK FILE
  26. ;    DISK DOWNLOAD
  27. ;    DISK EXECUTE
  28. ;    DISK UPLOAD
  29. ;    ECHO
  30. ;    EXTERN
  31. ;    FASTNET GETFILE
  32. ;    GOTO
  33. ;    HANGUP
  34. ;    IF
  35. ;    LOGOUT        <-- Option /FAST muss unterstuetzt werden !
  36. ;    ON ERROR
  37. ;    ON HANGUP
  38. ;    ZCONNECT GETFILE
  39. ;    ZCONNECT MAKEFILE
  40. ;    WAIT
  41. ;
  42. ;    Folgende Amiga-Dos-Befehle werden benutzt :
  43. ;
  44. ;    COPY
  45. ;    DELETE
  46. ;    LIST
  47. ;    SORT
  48. ;
  49. ;    Einrichtung eines Netcalls fuer eine Netzbox (Node) :
  50. ;    USERNAME : Name der anrufenden Node (z.B. TBA)
  51. ;    STRASSE  : @NETCALL
  52. ;    STADT     : Name der Domain (z.B. Fastnet.de)
  53. ;
  54. ;    Einrichtung eines LocalGates fuer die Einbindung eines anderen
  55. ;    lokalen Netzwerks :
  56. ;    USERNAME : Name der anrufenden Node (z.B. TBA)
  57. ;    VORNAME  : Gatename im Fastnet (z.B. Z-Netz)
  58. ;    STRASSE  : @LOCALGATE
  59. ;    STADT     : Name der Domain (z.B. Z-Netz.de)
  60. ;
  61. ;    Einrichtung eines Gates fuer die Einbindung eines anderen
  62. ;    globalen Netzwerks :
  63. ;    USERNAME : Name der anrufenden Node (z.B. TBA)
  64. ;    VORNAME  : Gatename im Fastnet (z.B. Z-Netz)
  65. ;    NACHNAME : Gatename im Zerberus-Netz (z.B. Fastnet)
  66. ;    STRASSE  : @GATE
  67. ;    STADT     : Name der Domain (z.B. Z-Netz.de)
  68. ;
  69. ;    Wenn hinter der anrufenden Node noch weitere Nodes haengen,
  70. ;    die ebenfalls das Netz empfangen, so muss die Datei
  71. ;    MBDAT:NODENAME.NODES eingerichtet werden
  72. ;    (NODENAME = Name der anrufenden Node).
  73. ;    In dieser Datei muessen die anrufende Node und die Nodes stehen,
  74. ;    die ueber sie zu erreichen sind.
  75. ;    Der Aufbau dieses Files ist im Kapitel Systemnachrichten/Nodeliste
  76. ;    der Fastnet-Format-Guide nachzulesen. Die Datei muss einer normalen
  77. ;    Nodelisten-Systemnachricht entsprechen, als Datum darf der Wert 0
  78. ;    angegeben werden, er entspricht immer dem akt. Tag.
  79. ;
  80. ;    Konstanten :
  81. ;
  82. ;DEBUG    ="ON"                    ; Rette empfangenes Pointfile
  83. DEBUGDIR  = "AMMS:NETDEBUG/"            ; Debug-Directory
  84. IMPORTPORT= "IMPORT"                ; Portname fuer Import
  85. TMPDIR    = "mbmsg:point/'{port}'/"        ; Dir fuer Tmp-Files
  86. EXPORTDIR = "mbnet:Export/"            ; Export-Directory
  87. IMPORTDIR = "mbnet:Import/"            ; Import-Directory
  88. EXFTABDIR = "mbnet:ExportFTab/"            ; Export-FTab-Directory
  89. IMFTABDIR = "mbnet:ImportFTab/"            ; Import-FTab-Directory
  90. MAXMSGLEN = 2000                ; Max. Laenge der Msgs in KByte
  91. MAXPMLEN  = 2000                ; Max. Laenge der PMs in KByte
  92. MSGFILE   = "'{CALLS}'.BRT"            ; Oeff. Nachrichten
  93. PMFILE    = "'{CALLS}'.PRV"            ; Private Nachrichten
  94. MSGNRFILE = "msgnr"                ; File fuer Msg-Nummern
  95. PMNRFILE  = "pmnr"                ; File fuer PM-Nummern
  96. COPYFILE  = "'{NAME}'@ZC.lha"            ; Vorgabefile (Pack-Event)
  97. COPYMSGNR = "'{NAME}'@ZC.msgnr"            ; File fuer Msg-Nummern
  98. COPYPMNR  = "'{NAME}'@ZC.pmnr"            ; File fuer PM-Nummern
  99. PCKFILE   = "called.lzh"            ; Name des gepackten Files
  100. RECFILE   = "caller.lha"            ; Name des empfangenen Files
  101. TBOXDIR   = "mbdat:"                ; Dir fuer Fastnet-Nodefile
  102. IMPORTFILE= "'IMPORTDIR''{NAME}'@ZC'{CALLNR}'.LHA" ; Importfile fuer anderen Port
  103. PACKER    = "lha -P-1 m ""'TMPDIR''PCKFILE'"" ""'TMPDIR''PMFILE'"" ""'TMPDIR''MSGFILE'"""
  104.                         ; Packen
  105. UPACKER   = "lha -P-1 e ""'TMPDIR''RECFILE'"" ""'TMPDIR'"" ""~(#?/#?|#?:#?)"""
  106.                         ; Entpacken
  107. LISTFILES = "'IMPORTDIR''{NAME}'@ZC#?"        ; Importfile
  108. LISTUPACK = "makedir *""'TMPDIR'%m*"" *n lha -P-1 e *""%s%s*"" *""'TMPDIR'%m/*"" *""~(#?/#?|#?:#?)*"""
  109.  
  110. ;
  111. ;    Domainname holen
  112. ;
  113. _on error ERROR                    ; Im Fehlerfall ...
  114. DOMAIN={CITY}                    ; Domainname holen
  115.  
  116. ;
  117. ;    Pruefe auf normalen Netcall
  118. ;
  119.  
  120. _if {STREET} != "@NETCALL" then _goto LOCALGATE
  121. FIL=16+128+256+512+32768
  122. OP_GET="/Type=0/Filter='FIL'/Cache=512/Header=96" ; Setze Optionen
  123. FIL=1+4+16+32+64
  124. OP_MAKEPM="/Type=0/Filter='FIL'"
  125. FIL=2+8+16+32+64
  126. OP_MAKEMSG="/Type=0/Filter='FIL'"
  127. _goto START
  128.  
  129. ;
  130. ;    Pruefe auf LocalGate
  131. ;
  132. LOCALGATE:
  133. _if {STREET} != "@LOCALGATE" then _goto GATE
  134. FIL=16+128+256+512+32768+262144
  135. OP_GET="/Type=2/Filter='FIL'/Cache=512/Header=96" ; Setze Optionen
  136. FIL=1+4+16+32+64
  137. OP_MAKEPM="/Type=2/Filter='FIL'"
  138. FIL=2+8+16+32+64
  139. OP_MAKEMSG="/Type=2/Filter='FIL'"
  140. _goto START
  141.  
  142. ;
  143. ;    Pruefe auf Gate
  144. ;
  145. GATE:
  146. _if {STREET} != "@GATE" then _goto USERPOINT
  147. FIL=16+128+256+512+32768
  148. OP_GET="/Type=1/Filter='FIL'/Cache=512/Header=96" ; Setze Optionen
  149. FIL=1+4+16+32+64
  150. OP_MAKEPM="/Type=1/Filter='FIL'"
  151. FIL=2+8+16+32+64
  152. OP_MAKEMSG="/Type=1/Filter='FIL'"
  153. _goto START
  154.  
  155. ;
  156. ;    User-Point
  157. ;
  158. USERPOINT:
  159. FIL=16+128+256+512
  160. OP_GET="/Type=3/Filter='FIL'/Cache=128/Header=48" ; Setze Optionen
  161. FIL=1+4+16+32+64
  162. OP_MAKEPM="/Type=3/Filter='FIL'"
  163. FIL=2+4+8+16+32+64
  164. OP_MAKEMSG="/Type=3/Filter='FIL'"
  165. DOMAIN="ZER"                    ; Domain ZER setzen
  166.  
  167. ;
  168. ;    Filebrett-Konverter-Files einbinden
  169. ;
  170. START:
  171. _check file "'EXFTABDIR''{NAME}'" NOEXPORTCVT
  172. OP_MAKEMSG="'OP_MAKEMSG'/FBoardlist=""'EXFTABDIR''{NAME}'"""
  173. NOEXPORTCVT:
  174. _check file "'IMFTABDIR''{NAME}'" NOIMPORTCVT
  175. OP_GET="'OP_GET'/FBoardlist=*""'IMFTABDIR''{NAME}'*"""
  176. NOIMPORTCVT:
  177.  
  178. ;
  179. ;    Wenn Spezial-Port, Daten nur importieren
  180. ;
  181.  
  182. _if IMPORTPORT == {PORT} then _goto SPECIAL     ; Wenn Spezial-Port, verzw.
  183.  
  184. ;
  185. ;    Aktiviere Handshaking
  186. ;
  187.  
  188. _echo "#home##cls#POINT LOGIN OK ...^J"
  189. _echo "running ARC^Jrunning ARC^Jrunning ARC^Jrunning ARC^Jrunning ARC"
  190.  
  191. ;
  192. ;    Loesche alte Files / Rename, wenn File immer noch geoeffnet
  193. ;
  194.  
  195. _if TMPDIR != "" then _extern/q delete "'TMPDIR'#?"
  196. _extern/q rename "'TMPDIR''PCKFILE'" "'TMPDIR''PCKFILE''{CALLNR}'"
  197. _extern/q rename "'TMPDIR''RECFILE'" "'TMPDIR''RECFILE''{CALLNR}'"
  198.  
  199. ;
  200. ;    Neue Nachrichten fuer andere Box sammeln & packen
  201. ;
  202.  
  203. COPYSTAT=0                    ; Kopier-Status auf FALSE
  204. _check file "'EXPORTDIR''COPYPMNR'" EXPORT    ; Existiert Sendefile ?
  205. _extern/q copy "'EXPORTDIR''COPYFILE'" "'TMPDIR''PCKFILE'"    ; Ja, vorgepackte
  206. _extern/q copy "'EXPORTDIR''COPYMSGNR'" "'TMPDIR''MSGNRFILE'" ; Files benutzen
  207. _extern/q copy "'EXPORTDIR''COPYPMNR'" "'TMPDIR''PMNRFILE'"
  208. _check file "'TMPDIR''PMNRFILE'" DELETE        ; Alle Daten korrekt kopiert ?
  209. _check file "'TMPDIR''MSGNRFILE'" DELETE    ; Wenn Nein, verzw.
  210. _check file "'TMPDIR''PCKNRFILE'" DELETE
  211. COPYSTAT=1                    ; Kopier-Status auf TRUE
  212. _goto HANDSHAKE                    ; Ja -> Warten auf Handshake
  213.  
  214. ;    Schon kopierte Daten aus TMP-Directory loeschen
  215.  
  216. DELETE:
  217. _if TMPDIR != "" then _extern/q delete "'TMPDIR'#?" ; Nein, kopierte Daten loeschen
  218.  
  219.  
  220. ;    PMs und Messages exportieren
  221.  
  222. EXPORT:
  223. _on error/ignore                
  224. _zconnect makefile'OP_MAKEPM' "'TMPDIR''PMFILE'" 'MAXPMLEN' "'TMPDIR''PMNRFILE'" "'DOMAIN'"
  225. _zconnect makefile'OP_MAKEMSG' "'TMPDIR''MSGFILE'" 'MAXMSGLEN' "'TMPDIR''MSGNRFILE'" "'DOMAIN'"
  226. _on error ERROR
  227.  
  228. ;    Messages packen
  229.  
  230. _extern/q 'PACKER'
  231.  
  232. ;
  233. ;    Handshaking senden
  234. ;
  235. HANDSHAKE:
  236. _echo/nolf "^U"                    ; NAK fuer Fertig senden
  237. _wait 2                        ; Sernr. ignorieren
  238. _echo/nolf "^F"                    ; Bei uns ist es immer OK !
  239.  
  240. ;
  241. ;    Messages uploaden und downloaden
  242. ;
  243.  
  244. _on hangup/ignore                ; Auch weiter wenn aufgelegt
  245. _disk upload "'TMPDIR''RECFILE'"        ; File vom Point empfangen
  246. _disk download "'TMPDIR''PCKFILE'"        ; File an Point schicken
  247.  
  248. ;
  249. ;    Auflegen nach 3 Sekunden
  250. ;
  251.  
  252. _on error/ignore                ; Alle Fehler ignorieren
  253. _wait 3                        ; 3 Sekunden warten
  254. _hangup                        ; Modem auflegen
  255.  
  256. ;
  257. ;    Wenn Files vorgepackt abgeholt, dann vorgepackte Daten loeschen
  258. ;
  259.  
  260. _if/i COPYSTAT == 1 then _extern/q delete "'EXPORTDIR''COPYPMNR'" "'EXPORTDIR''COPYFILE'" "'EXPORTDIR''COPYMSGNR'"
  261.  
  262. ;
  263. ;    Geschickte Messages und PMs als gelesen markieren
  264. ;
  265.  
  266. _zconnect makefile/setnr "'TMPDIR''MSGNRFILE'"    ; Gezogene Msgs = alte Msgs
  267. _zconnect makefile/setnr "'TMPDIR''PMNRFILE'"    ; Gezogene PMs = alte PMs
  268.  
  269. ;
  270. ;    Nicht mehr benoetigte Files loeschen
  271. ;
  272.  
  273. _extern/q delete "'TMPDIR''PCKFILE'" "'TMPDIR''PMNRFILE'" "'TMPDIR''MSGNRFILE'"
  274.  
  275. ;
  276. ;    Bei Netcall optional zusaetzliche Nodes in Liste aufnehmen
  277. ;
  278.  
  279. _if {STREET} != "@NETCALL" then _goto NONODES    ; @Netcall ? Nein, verzw.
  280. _check file "'TBOXDIR''{NAME}'.NODES" NONODES    ; Wenn File nicht vorhanden, verzw.
  281. _fastnet getfile "'TBOXDIR''{NAME}'.NODES"    ; Nodes in Nodeliste aufnehmen
  282. NONODES:
  283.  
  284. ;
  285. ;    Wenn Debug-Modus aktiv, empfangenes Pointfile retten
  286. ;
  287.  
  288. _if DEBUG == "ON" then _extern/q copy "'TMPDIR''RECFILE'" "'DEBUGDIR''{NAME}''{CALLNR}'.LHA"
  289.  
  290. ;
  291. ;    Wenn Port IMPORT existiert, Import-Event starten
  292. ;
  293.  
  294. _check port "'IMPORTPORT'" IMPORT        ; Wenn kein Port, verzw.
  295. _extern/q copy "'TMPDIR''RECFILE'" "'IMPORTFILE'"
  296. _add event/Background "'IMPORTPORT'" 0 3 mbbatch:zconnect_import "'{NAME}'"
  297. _goto END                    ; -> Ende
  298.  
  299. ;
  300. ;    Alle Messages, Files und PMs im Port IMPORT importieren
  301. ;
  302. SPECIAL:
  303. _extern/q list >"t:zc1'{port}'" "'LISTFILES'" lformat "'LISTUPACK' *n delete *"%s%s*""
  304. _extern/q execute "t:zc1'{port}'"
  305. _extern/q list >"t:zc1'{port}'" "'TMPDIR'#?/#?" lformat "zconnect getfile'OP_GET' *"%s%s*" 'DOMAIN'"
  306. _extern/q echo >"t:zc2'{port}'"
  307. _extern/q sort "t:zc1'{port}'" to "t:zc2'{port}'"
  308. _disk execute "t:zc2'{port}'"
  309. _extern/q delete "t:zc1'{port}'" "t:zc2'{port}'"
  310. _goto END                    ; -> Ende
  311.  
  312. ;
  313. ;    Wenn kein Port, alle Messages, Files und PMs sofort importieren
  314. ;
  315. IMPORT:
  316. _extern/q 'UPACKER'
  317. _extern/q delete "'TMPDIR''RECFILE'"
  318. _extern/q list >"t:zc1'{port}'" "'TMPDIR'" lformat "zconnect getfile'OP_GET' *"%s%s*" 'DOMAIN'"
  319. _extern/q echo >"t:zc2'{port}'"
  320. _extern/q sort "t:zc1'{port}'" to "t:zc2'{port}'"
  321. _disk execute "t:zc2'{port}'"
  322. _extern/q delete "t:zc1'{port}'" "t:zc2'{port}'"
  323.  
  324. ;
  325. ;    Alle temporaer erzeugten Files loeschen
  326. ;
  327. ERROR:                        ; Fehler / Ende
  328. END:
  329. _if TMPDIR != "" then _extern/q delete "'TMPDIR'#?" all ; Disk aufraeumen
  330. _logout/f                    ; Logout
  331.